/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.edu.unipampa.narrativa;

import br.edu.unipampa.personagem.Mensageiro;
import java.util.Scanner;

/**
 *
 * @author Daniele Martins
 */
public class Interface {

    private int comando;//String que recebe
    private Scanner teclado;
    private boolean erro;

    public Interface() {
        teclado = new Scanner(System.in);

    }

    public void historiaInicial() {
        System.out.println(" A presente história se passa na época da Revolução"
                + " Farroupilha, onde a então província de São Pedro"
                + " do Rio Grande do Sul");

        System.out.println("independência, dando origem à República"
                + " Rio-Grandense."
                + " A Guerra dos Farrapos"
                + " estendeu-se de 20 de setembro de 1835 a 1 de");

        System.out.println("março de 1845. Neste contexto, a cidade do Alegrete"
                + " foi "
                + "estratégica  para a revolução, chegando a ser a terceira  capital");

        System.out.println("farroupilha. Nesta  época o perímetro da cidade "
                + "era muito  bem guardado, pois  abrigava General Bento Gonçalves, líder da");

        System.out.println("revolução e presidente da república.\n");

    }

    public void inicio() {
        System.out.println("O mensageiro inicia sua jornada em busca da cidadde, afim de entregar a carta para o presidente. \n");
    }

    public void encherCantil() {
        System.out.println("Deseja encher o cantil extra antes de continuar ?");
        System.out.println("[1] Sim                [2] Não ");
        analizaEntrada(2);
        if (comando == 1) {
            System.out.println("Cantil extra cheios !!\n");

        } else {
        }
    }

    public void deserto() { // acrescentar historia
        System.out.println("++Deserto++");
        System.out.println("Depois de algumas horas o mensageiro chega no deseto."
                + "Seguindo em  frente o mensageiro encontra um posto onde \n"
                + "verifica sua disponibiliade de água, se for pouca deverá encher seu cantils mas para isso terá que fazer um pequeno \n"
                + "esforço para alcançar a água do poço. \n");


    }

   

    public void charcoSul() {
        System.out.println("++Charco Sul++");
        System.out.println("O Mensageiro parte em direção ao Charco Sul.\n ");


    }

    public void charcoNorte() {
        System.out.println("++Charco Norte++");
        System.out.println("O Mensageiro parte em direção ao Charco Norte.\n ");
    }

    public void cidade() {
        System.out.println("++Cidade++");
        System.out.println("Mensageiro chegou na cidade e está quase completanto sua missão,"
                + "\nmas para isso deverá infrentar seu inimigo e vencer."
                + "\nDeseja infrentar inimigo ?");
        System.out.println("[1] Sim  [2] Não");
        analizaEntrada(2);
    }

    public void entregarCarta(){
        System.out.println("Mensageiro superou todos desafios possiveis e conseguiu alcançar seu objetivo."
                + "\n Deseja entregar a carta ?");
        analizaEntrada(1);
        if (getComando() ==1) {
            System.out.println("Carta entregue");
            System.out.println("------FIM DO JOGO ------");
            
        }
    }
    public void estrada() {
        System.out.println("++Estrada++");
        System.out.println("O Mensageiro parte em direção a Estrada.\n ");
    }

    public void serra() {
        System.out.println("++Serra++");
        System.out.println("O Mensageiro parte em direção a Serra.\n ");
    }

    public void ponte() {
        System.out.println("++Ponte++");
        System.out.println("O Mensageiro parte em direção a Ponte. ");
    }

    public void arroio() {
        System.out.println("++Arroio++");
        System.out.println("O Mensageiro parte em direção ao Arroio.\n ");
    }

    public void amigo() {
        System.out.println("Durante a viaje você encontra um amigo, ele possui uma dica que pode ser util.");
        System.out.println("Deseja ouvir?");
        System.out.println("[1] Sim      [2] Não\n");
        analizaEntrada(2);
    }
    
    
    public void amigoDeserto(){
        System.out.println("Você está muito desidatrado e bem provavel que não resista durante "
                + "a viagem. Sendo assim, beba a agua do cantil");
    }
    public void amigoPonte(){
        System.out.println("Para seguir a viagem é necessario pegar a corda que está a poucos metros de você."
                + "\nEla será útil na hora de escalar a ponte.\n");
    }

    public void lutaInimigo() {
        System.out.println("Durante a viagem o Mensageiro se depara com o inimigo que o desafia para uma batalha. "
                + "\nPara seguir o jogo e alcançar o objetivo de entregar a carta é preciso enfrentar o desafio ou morrerá.");
        System.out.println("Deseja enfrenta-lo ? \n");
        System.out.println("[1] Sim    [2] Não");
        analizaEntrada(2);

    }

    public void desistiu() {
        System.out.println("Mensageiro foi covarde e não aceitou lutar com o inimigo."
                + "\nMorreu ");
        System.exit(0);
    }

    public void perdeuLuta() {
        System.out.println("Mensageiro é mais fraco que seu inimigo. Perdeu.");
    }

    public void ganhouLuta() {
        System.out.println("Mensageiro é mais forte que seu inimigo. Ganhou.");
    }

    public void oQueDesejaFazer() {
        System.out.println("Você enfrentou e conseguiu vencer o desafio. "
                + "\nAgora tem a opção de comer, beber, dormir ou se desejar já pode escolher qual caminho seguir.\n");
        System.out.println("O que deseja fazer ?");
        System.out.println("[1] Comer  [2] Dormir  [3] Beber  [4] Escolher caminho\n");
        analizaEntrada(4);
    }

    // metodo de escolha de qual dos 4 caminhos possiveis seguir
    public void escolheCenario() {
        System.out.println("\nExistem 4 caminhos a seguir. Cuidado, pois alguns deles pode levá-lo a morte. ");
        System.out.println("[1] Caminho 1             [2] Caminho 2             [3]  Caminho 3             [4]Caminho 4\n");

        analizaEntrada(4);
        if (getComando() == 1) {
            //System.out.println("-------------------------- Caminho 1 ------------------------- \n");
        } else if (getComando() == 2) {
            //System.out.println("-------------------------- Caminho 2 ------------------------- \n");
        } else if (getComando() == 3) {
            //System.out.println("-------------------------- Caminho 3 ------------------------- \n");
        } else {
            //System.out.println("-------------------------- Caminho 4 ------------------------- \n");
        }
    }

    public void histCharco() {
        System.out.println("O mensageiro viajou durante horas e finalmente chegou no charco.\n");
    }

    public void escolhaCharco() {
        System.out.println("Durante a viagem você se depara com uma encruzilhada, "
                + "você pode escolher seguir em frente ou escolher o caminho norte ou sul ");

        System.out.println("Por qual caminho deseja seguir?");
        System.out.println("1 - Norte             2 - Sul      3 - Seguir  ");
        analizaEntrada(3);
        
    }

    public void mostraBeber(boolean flag) {
        if (flag == true) {
            System.out.println("--------------------------O Mensageiro bebeu água do seu"
                    + " cantil.-------------------------\n");

        } else {
            System.out.println("--------------------------O cantil está vazio"
                    + "-------------------------\n");

        }
    }

    public void desejaBeber() {
        System.out.println("Deseja beber agua antes de continuar?");
        System.out.println("1- Sim     2- Não");
        analizaEntrada(2);
        
    }
     public void pegarCorda() {
        System.out.println("Deseja pegar corda antes de continuar?");
        System.out.println("1- Sim     2- Não");
        analizaEntrada(2);
         if (getComando() == 1) {
            System.out.println("--------------------------Você pegou a corda-------------------------"); 
        } else {
            System.out.println("--------------------------Você não pegou a corda ------------------------- \n");
            System.exit(0);
        }
        
    }
     

    public void escolhaComerDormirBeber() {

        System.out.println("O que deseja fazer?");
        System.out.println("[1]  Comer             2 - Dormir             3 - Beber\n");
        analizaEntrada(3);
        if (getComando() == 3) {
            System.out.println("--------------------------Você escolheu beber.-------------------------");

        } else if (getComando() == 1) {
            System.out.println("--------------------------Você escolheu comer ------------------------- \n");
        } else {
            System.out.println("--------------------------Você escolheu dormir ------------------------- \n");
        }


    }

    public void comeu() {
        System.out.println("O que você quer comer?");
        System.out.println("1 - Carne             2 - Laranja             3 - Maçã\n");
        analizaEntrada(3);
        if (getComando() == 1) {
            System.out.println("O mensageiro comeu uma carne.");
        } else if (getComando() == 2) {
            System.out.println("O mensageiro comeu uma laranja.");
        } else {
            System.out.println("O mensageiro comeu uma maçã");
        }
    }

    public void dormiu() {
        System.out.println("O Mensageiro  dormiu durante algumas horas e recuperou suas forças. ");
    }

    public void FimJogo() {
        System.out.println(" O Mensageiro não tem forças para continuar.");
        System.out.println("-------------------------- Fim do Jogo -------------------------");
        System.exit(0);
    }

    public void mostraVida(int vida) {
        System.out.println("--------------- Sua força atual é " + vida + "."
                + "---------------\n");
    }

    public boolean analizaNumero(int comando, int max) {
        if ((comando > max) || (comando == 0)) {
            System.out.println("Erro: Digite somente um número de 1 até " + max + "\n");
            return true;
        } else {
            return false;
        }
    }

    public boolean analizaComando(String string) {
        boolean flag = false;
        char[] vetor = new char[string.length()];
        for (int i = 0; i < string.length(); i++) {
            vetor[i] = string.charAt(i);
        }
        for (int i = 0; i < string.length(); i++) {
            if ((vetor[i] < '0') || (vetor[i] > '9')) {
                flag = true;
                break;
            }
        }
        if (flag) {
            System.out.println("Erro: Digite somente números");
            return true;
        } else {
            setComando(Integer.parseInt(string));
            return false;
        }
    }

    public void analizaEntrada(int max) {
        while (erro = true) {
            int cont = 0;
            if (analizaComando(getTeclado().nextLine()) == false) {
                cont++;
            }
            if (analizaNumero(getComando(), max) == false) {
                cont++;
            }
            if (cont == 2) {
                break;
            }
        }
    }

    public int getComando() {
        return comando;
    }

    public void setComando(int comando) {
        this.comando = comando;
    }

    public Scanner getTeclado() {
        return teclado;
    }

    public void setTeclado(Scanner teclado) {
        this.teclado = teclado;
    }

    
}
